/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rhdtp.demopf.control.admin;

import com.rhdtp.demopf.model.dao.ClienteDAO;
import com.rhdtp.demopf.model.dto.Cliente;
import com.rhdtp.demopf.security.UserSession;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;
import org.primefaces.context.RequestContext;

/**
 *
 * @author rhdtp
 */
public class Clientes {

    private static final Logger logger = Logger.getLogger(Clientes.class);
    private Cliente cliente;
    private ClienteDAO clienteDAO;
    private UserSession userSession;
    private List<Cliente> clientesFilter;

    public Clientes() {
    }

    public void save() {

        if (cliente.getId() != 0) {
            clienteDAO.update(cliente);
            msgInfo("Info.", "El cliente: " + cliente.getNombre()+ " ah sido actualizado correctamente.");
        } else {
            cliente.setId(clienteDAO.countId() + 1);
            clienteDAO.save(cliente);
            msgInfo("Info.", "El cliente: " + cliente.getNombre()+ " ah sido guardado correctamente.");
        }

        this.initObjects();
    }

    public void edit(Cliente cl) {
        cliente = clienteDAO.load(cl);
        RequestContext.getCurrentInstance().scrollTo("registro:formulario");
    }

    public void remove(Cliente cl) {
        if (clienteDAO.delete(cl)) {
            msgInfo("Info.", "El cliente: " + cl.getNombre()+ " a sido borrado correctamente.");
        } else {
            msgError("Error", "No se pudo borrar el Cliente, esto puede ser porque tiene algún registro dependiente");
        }
    }

    public void resetForm() {
        initObjects();
        RequestContext.getCurrentInstance().reset("registro:formulario");
    }

    public void reset() {
        this.initObjects();
    }

    @PostConstruct
    public void initObjects() {
        cliente = new Cliente();
        cliente.setId(0);
        clientesFilter = null;
    }

    public void msgInfo(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public void msgError(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public void msgWarning(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public List<Cliente> getClientes() {
        return clienteDAO.list();
    }

    /**
     * @return the cliente
     */
    public Cliente getCliente() {
        return cliente;
    }

    /**
     * @param cliente the cliente to set
     */
    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    /**
     * @param clienteDAO the clienteDAO to set
     */
    public void setClienteDAO(ClienteDAO clienteDAO) {
        this.clienteDAO = clienteDAO;
    }

    public UserSession getUserSession() {
        return userSession;
    }

    public void setUserSession(UserSession userSession) {
        this.userSession = userSession;
    }

    public List<Cliente> getClientesFilter() {
        return clientesFilter;
    }

    public void setClientesFilter(List<Cliente> clientesFilter) {
        this.clientesFilter = clientesFilter;
    }
}
